#define bswaptls(s) bswap64s(s)
#endif
+#ifdef CONFIG_SOFTFLOAT
/* NOTE: arm FPA is horrible as double 32 bit words are stored in big
endian ! */
typedef union {
#endif
uint64_t ll;
} CPU_DoubleU;
+#endif
/* CPU memory access without any memory or io remapping */
stl_le_p(p + 4, v >> 32);
}
+#ifdef CONFIG_SOFTFLOAT
/* float access */
static inline float32 ldfl_le_p(void *ptr)
stl_le_p(ptr, u.l.lower);
stl_le_p(ptr + 4, u.l.upper);
}
+#endif
#else
*(uint64_t *)ptr = v;
}
+#ifdef CONFIG_SOFTFLOAT
/* float access */
static inline float32 ldfl_le_p(void *ptr)
*(float64 *)ptr = v;
}
#endif
+#endif
#if !defined(WORDS_BIGENDIAN) || defined(WORDS_ALIGNED)
stl_be_p(ptr + 4, v);
}
+#ifdef CONFIG_SOFTFLOAT
/* float access */
static inline float32 ldfl_be_p(void *ptr)
stl_be_p(ptr, u.l.upper);
stl_be_p(ptr + 4, u.l.lower);
}
+#endif
#else
*(uint64_t *)ptr = v;
}
+#ifdef CONFIG_SOFTFLOAT
/* float access */
static inline float32 ldfl_be_p(void *ptr)
{
*(float64 *)ptr = v;
}
+#endif
#endif
#include "cpu-defs.h"
+#ifdef CONFIG_SOFTFLOAT
#include "softfloat.h"
+#endif
#if defined(__i386__) && !defined(CONFIG_SOFTMMU)
#define USE_CODE_COPY
#endif
+#ifdef CONFIG_SOFTFLOAT
#ifdef USE_X86LDOUBLE
typedef floatx80 CPU86_LDouble;
#else
typedef float64 CPU86_LDouble;
#endif
+#endif
/* Empty for now */
typedef struct CPUX86State {